package Map.TreeMap;
import java.util.TreeMap;
import java.util.Map;
/**
 * @Description:
 * 1、底层实现是红黑树，插入删除和查找区别的时候需要进行元素比较
 * 2、需要Key有序场景下使用
 * @Author:AMark
 * @Date: 10/19/2023
 */
public class TreeMapTest {
    public static void main(String[] args) {
        Map<String, String> m = new TreeMap<>();
        //前面的是键值，后面的是键值所指的内容
        //put(key,value),如果key不存在，会将key-value将至对插入到map中，返回null
        m.put("林冲","豹子头");
        m.put("鲁智深","花和尚");
        m.put("武松","行者");
        m.put("宋江","及时雨");
        String str = m.put("李逵","黑旋风");
        System.out.println(m.size());
        //打印所有键值对
        System.out.println(m);

        str = m.put("无名", null);
        System.out.println(m.size());
        //如果之前有这个键值，那么就修改对应的值，然后返回原来的值
        str = m.put("李逵","铁牛");
        System.out.println(str);

        //get函数可以获得key所对应的value
        System.out.println(m.get("鲁智深"));

        //检查是否含有响应的键值或者对应的值
        System.out.println(m.containsKey("林冲"));
        System.out.println(m.containsValue("林冲"));

        //打印所有的key
        System.out.println("以下是所有key:");
        for(String s : m.keySet()) {
            System.out.println(s + " ");
        }
        System.out.println();

        //打印所有的value
        System.out.println("以下是所有值：");
        for(String s : m.values()) {
            System.out.print(s + " ");
        }
        System.out.println();
        //打印所有键值对
        System.out.println("以下是所有键值对：");
        for(Map.Entry<String, String> entry : m.entrySet()) {
            System.out.println(entry.getKey() +"--->" + entry.getValue());
        }
        System.out.println();

    }

}
